<?php
/**
 * View_Order
 *
 * Класс View_Order отвечает за вывод информации, связанной с заказами
 *
 */
class View_Order extends View_Base {

	/**
	 * Выводит страницу заказа
	 *
	 * @param Order $objOrder
	 */
	public function showOrderPage($objOrder,$responsesCount, $arrResponses = null) {
		Service_Debug::setDebug();
		echo '<div id="article-full">';
			echo '<h1>' . $objOrder->getField('order_name') . '</h1>';
			echo '<div class="simple-info">';
				echo '<div class="city">';
					echo $objOrder->getCity();
				echo '</div>';
			echo '</div>';
			echo '<div id="full-content">';
				echo $objOrder->getField('description');
			echo '</div>';
		if ($objOrder->getField('address')) {
			echo '<p><b>Адрес:</b></p>';
			echo $objOrder->getField('address');
		}
		if ($objOrder->getField('phone')) {
			echo '<p><b>Контактный телефон:</b></p>';
			echo $objOrder->getField('phone');
		}
		if ($objOrder->getField('cost')) {
			echo '<p><b>Ожидаемый бюджет:</b></p>';
			echo $objOrder->getField('cost');
		}
		echo '</div>';
		$arrAuthor = $objOrder->getAuthor();
		echo '<div class="simple-info">';
		echo '<div class="question-from bottom-info">';
				echo 'Заявку оставил ';
				if (SimpleAdministration::isAuthor($objOrder->getField('ID_user'))) echo '<a class="user-blue-link" href="' . W_ABSPATH . 'profile">' . $arrAuthor ['first_name'] . ' ' . $arrAuthor['last_name'] .  '</a> ';
				else echo '<a class="user-blue-link" href="' . User_User::getUserUrl($arrAuthor['ID_user']).  '">' . $arrAuthor ['first_name'] . ' ' . $arrAuthor['last_name'] .  '</a> ';
				echo  Service_Date::changeDateFormat($objOrder->getField('created_at'), 'Y-m-d H-i-s', 'j R Y в H:i');
			echo '</div>';
			
				echo '<div class="responses">';
					echo  'Предложений: ' . ' ' . $responsesCount;
				echo '</div>';
			echo '</div>';
			echo '<div class=clear></div>';
		
			echo '<div class="actions-block">';
			echo '<div id="phantom-block">';
				$canResponseFlagOrArray = $objOrder->canResponse();
				if(!is_array($canResponseFlagOrArray) && $canResponseFlagOrArray) echo '<a id="response-link" href=#>Откликнуться</a>';
			echo '</div>';
		echo '</div>';
		$showResponsesArray = false; // Массив откликов для отображения
		if(is_array($canResponseFlagOrArray)) { // Если пришёл массив (один отклик текущего пользователя(мастера) по заказу)
			$showResponsesArray = $canResponseFlagOrArray;	
		}
		elseif($canResponseFlagOrArray) {
			echo '<div id="to-response">';
				$objForm = new Form_ViewForm(array(
						'id' => 'response-form',
						'errorIfExists' => true,
						'viewFormType' => 'div',
				), new OrderResponse());
				$objForm->show();
				$objForm->hiddenField(array('value' => $objOrder->id),'ID_order');// id текущего заказа
				$objForm->textareaField(array('class' => 'mandatory','label' => 'Оставьте комментарий к отклику: примерная стоимость, сроки и др.'), 'text');
				$objForm->submitButton(array('value' => 'Отправить'), 'save');
				$objForm->close();
			echo '</div>';
		}
		elseif($arrResponses) { // Если передан массив, значит заказ просматривает его автор или админ. Нужно будет выводить все отклики
			$showResponsesArray = $arrResponses;
		}
		if($showResponsesArray) { // Если есть отклики 
			echo '<div class="answer-block">';
				echo '<h2>Отклики на заказ</h2>';
				foreach ($showResponsesArray as $responseArray) {
					echo '<div class="answer-info info">';
						echo '<table>';
							echo '<tr>';
								echo '<td class="mail_from_photo">';
									if (SimpleAdministration::isAuthor($responseArray['ID_user'])) echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . 'profile">';
									else echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . 'master/' . $responseArray['ID_user'] .  '">';
										$filename = IMAGES . 'essence/user/' . $responseArray['ID_user'] . '/s_profile' . '.jpg';
										if(file_exists($filename)) echo '<img src="' . W_IMAGES . 'essence/user/' . $responseArray['ID_user'] . '/s_profile' . '.jpg">';
										else echo '<img src="' . W_IMAGES . 'essence/user/s_nophoto.gif">';
									echo '</a>';
								echo '</td>';
								echo '<td>';
									if (SimpleAdministration::isAuthor($responseArray['ID_user'])) echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . 'profile">' . $responseArray['first_name'] . ' ' . $responseArray['last_name'] . '</a> ';
									else echo '<a class="user-blue-link answer-author" href="' . W_ABSPATH . 'master/' . $responseArray['ID_user'] .  '">' . $responseArray['first_name'] . ' ' . $responseArray['last_name'] . '</a> ';
									echo Service_Date::changeDateFormat($responseArray['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i');
								echo '</td>';
								echo '<td class="answer-options">';
								echo '</td>';
							echo '</tr>';
						echo '</table>';
					echo '</div>';
					echo '<div class="answer-content">';
						echo '<div class="answer-text">';
							echo $responseArray['text'];
						echo '</div>';
					echo '</div>';
				}
			echo '</div>';
		}
	}
	
	/**
	 * Выводит форму добавления заказа
	 *
	 * @param Order $objOrder
	 */
	public function showAddForm(Order $objOrder) {
		Service_Debug::setDebug();
		$objSession = User_Session::instance();
		
		$objForm = new Form_ViewForm(array(
				'errorIfExists' => true,
				'leftWidth' => 320,
				'viewFormType' => 'table'
		), $objOrder);
		
		echo '<div class="reg-background like-reg-block">';
			echo '<div id="add-order-block">';
				if(!$objSession->isLoggedIn()) echo '<p class="important-info">Вы не авторизованы.<a href="' . W_ABSPATH . 'auth/sign_in"> Войдите </a>на сайт или продолжите оформлениe заказа, дополнительно указав данные для регистрации.</p>';
				echo '<p class="grey">Здездочкой (<span class="required">*</span>) отмечены поля обязательные для заполнения</p>';
				$objForm->show();
		
				$objForm->textField(array('text' => 'Заголовок заказа', 'required' => 1), 'order_name');
				$objForm->textareaField(array('rows' => 15, 'cols' => 80, 'text' => 'Максимально подробное описание работ', 'required' => 1), 'description');
			
				$objCity = new City();
				$arrCities = $objCity->getArrCities();
				$objForm->selectField(array('text' => 'Город заказа','valueName' => 'city_name','keyName' => 'city','optionsArray' =>$arrCities),'city');
		
				$objForm->textField(array( 'text' => 'Контактный телефон'), 'phone');
				$objForm->textField(array('maxlength' => 11, 'text' => 'Ориентировочный бюджет'), 'cost');
		
				if(!$objSession->isLoggedIn()) {
					echo '</table>';
					echo '</div>';
					echo '<div id="reg-in-order">';
						echo '<table><tr><td><h1>Регистрация</h1></td></tr>';
	  	 				$objForm->textField(array('maxlength' => '64', 'text' => 'Имя', 'required' => 1), 'first_name');
	  	 				$objForm->textField(array('maxlength' => '64', 'text' => 'Фамилия', 'required' => 1), 'last_name');
	  	 				$objForm->textField(array('maxlength' => '128', 'text' => 'Электронная почта', 'required' => 1), 'e_mail');
	  	 				$objForm->passwordField(array('maxlength' => '32', 'text' => 'Пароль', 'required' => 1), 'pass');
	  	 				$objForm->passwordField(array('maxlength' => '32', 'text' => 'Подтверждение пароля', 'required' => 1), 'pass_confirmation');
	  	 				echo '<tr><td id="kaptcha-td">';
	  	 				$objForm->kaptchaField(array('maxlength' => '6', 'text' => 'Введите код', 'required' => 0, 'value' => '' , 'class' => 'kaptchaInput'), 'kaptcha');
	  	 				echo '</tr>';
					}
					$objForm->submitButton(array('value' => 'Отправить'), 'save');
					$objForm->close();
					echo '</table>';
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Выводит форму редактирвоания заказа
	 * 
	 * @param Order $objOrder
	 */
	public function showEditForm(Order $objOrder) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objOrder);
		$objForm->show();
		
		$objForm->textField(array('text' => 'Заголовок заказа', 'required' => 1), 'order_name');
		
		$objForm->textareaField(array('rows' => 15, 'cols' => 80, 'text' => 'Описание заказа', 'wideTextarea' => true, 'required' => 1), 'description');
		
		$objCity = new City();
		$arrCities = $objCity->getArrCities();
		$objForm->selectField(array('text' => 'Город заказа','valueName' => 'city_name','keyName' => 'city',
				'optionsArray' =>$arrCities),'city');
				
		$objForm->textAreaField(array('rows' => 5, 'cols' => 17, 'text' => 'Адрес'), 'address');

		$objForm->textField(array( 'text' => 'Контактный телефон'), 'phone');
		
		$objForm->textField(array('maxlength' => 11, 'text' => 'Ориентировочный бюджет'), 'cost');
		
		$objForm->submitButton(array(), 'save');
		$objForm->close();
	}
	
	
	/**
	 * (non-PHPdoc)
	 * @see View_Base::showOneInList()
	 */
	public function showOneInAdminList($arrOrder) {
		Service_Debug::setDebug();
		echo '<div class="order-block  simple-block">';
			echo '<h2>';
				echo '<a href="' . W_ABSPATH . 'orders/' . $arrOrder['ID_order']  . '">';
					echo Service_Function::utf8_string_with_limit($arrOrder['order_name'], 60, true);
				echo '</a>';
				echo '<span class="subtitle">' . $arrOrder['city_name'] . '</span>';
			echo '</h2>';
			echo '<div class="simple-short-content">';
				echo '<p>';
					echo Service_Function::utf8_string_with_limit($arrOrder['description'], 400, true);
				echo '</p>';
			echo '</div>';
			echo '<div class="simple-info">';
				echo '<div>';
					echo '<div class="time-icon"></div>';
						echo '' . Service_Date::changeDateFormat($arrOrder['created_at'], 'Y-m-d H-i-s', 'j R Y в H:i');
					echo '<div class="responses">';
						echo 'Предложений: ' . $arrOrder['order_responses'];
					echo '</div>';
				echo '</div>';
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Метод отображает список элементов переданного массива
	 *
	 * @param array $arrList - массив элементов для отображения в списке
	 * @param string $divId - идентификатор блока, обрамляющего список. Если === null, то обрамляющего дива вообще не будет
	 * @param bool $isTable - флаг, выводить ли таблицей 
	 */
	public function showAdminList($arrOrders, $pagesNumber,$pageNumber) {
		Service_Debug::setDebug();
    	echo '<div id="orders-list">';
   	 	if (!$arrOrders) echo 'Заказов пока нет.';
   	 	else {
			foreach ($arrOrders as $arrOrder) {
	    		$this->showOneInAdminList($arrOrder);
	   		}
    	}
		echo '</div>';
		if ($pagesNumber > 1) {
			$pattern = W_ABSPATH . 'orders?';
			$this->getNavigation($pattern, $pageNumber, $pagesNumber);
		} 
	}
	
	
}
?>